Jerry's Log

Semantic Search

contents

시맨틱 검색(Semantic Search)(벡터 임베딩 기반)은 컴퓨터가 텍스트를 "읽는" 방식을 근본적으로 바꿈으로써 동의어 문제를 해결합니다. 글자를 매칭하는 대신 의미를 매칭하는 방식입니다.

다음은 이 기술이 어떻게 작동하는지에 대한 분석입니다.


1. 핵심 개념: 좌표로서의 단어 (Words as Coordinates) 📍

키워드 검색에서 "Laptop(랩탑)"은 단순히 6글자로 된 문자열(L-a-p-t-o-p)일 뿐입니다.

시맨틱 검색에서 "Laptop"은 벡터(Vector), 즉 긴 숫자 리스트(좌표)로 변환됩니다.

이 숫자 리스트는 다차원의 "의미 공간(Meaning Space)"(또는 잠재 공간)에서 해당 단어의 위치를 나타냅니다.

2. 의미의 "지도" (임베딩 공간) 🗺️

사전에 있는 모든 단어가 하나의 점으로 찍혀 있는 거대한 3차원 지도를 상상해 보세요.

이 지도의 규칙은 간단합니다: 비슷한 의미를 가진 단어들은 서로 가깝게 배치된다.

3. 동의어 문제 해결 🤝

이것이 바로 키워드 검색이 실패하는 지점을 해결하는 원리입니다.

시나리오: 사용자가 "Cheap Notebook(저렴한 노트북)"을 검색함

A. 키워드 검색 (실패)

  1. 사용자 검색어: "Cheap Notebook"
  2. 문서 A: "Affordable Laptop for sale." (저렴한 랩탑 팝니다.)
  3. 결과: 매칭 안 됨.
    • 이유: 문서 A에는 "Notebook"이라는 문자열이 존재하지 않습니다. 엔진은 겹치는 글자가 없다고 판단합니다.

B. 시맨틱 검색 (해결)

  1. 검색어 벡터화: 엔진은 "Cheap Notebook"을 벡터 좌표로 변환합니다: [0.85, 0.10, ...]
  2. 문서 벡터화: 엔진은 이미 문서 A("Affordable Laptop")를 벡터로 변환해 두었습니다: [0.84, 0.11, ...]
  3. 거리 측정: 엔진은 이 두 벡터 사이의 거리(또는 각도)를 계산합니다.
  4. 결과: 매칭 성공!
    • 이유: 단어(글자)는 다르지만, 의미 공간상에서 그들의 좌표 가 거의 일치하기 때문입니다. 수학적 거리가 가깝기 때문에 엔진은 이들이 관련 있다고 판단합니다.

4. 수학적 원리: 코사인 유사도 (Cosine Similarity) 📐

컴퓨터는 두 벡터가 가깝다는 것을 어떻게 알까요? 보통은 직선 거리(유클리드 거리)를 재지 않고, 두 벡터 사이의 각도를 측정합니다. 이를 코사인 유사도라고 합니다.

예시:


5. 동의어를 넘어: "문맥적" 의미 (Contextual Meanings) 🧠

과거의 벡터 모델(Word2Vec 등)은 각 단어에 하나의 고정된 벡터를 부여했습니다.

최신 모델(Transformer/LLM)은 문맥적 임베딩(Contextual Embeddings) 을 생성합니다. 이는 더 어려운 문제를 해결합니다.

예시: 단어 "Bank" (은행 vs 강둑)

  1. "I sat on the river bank." (나는 강 에 앉았다.)
  2. "I went to the bank to deposit money." (나는 돈을 예금하러 은행에 갔다.)

이를 통해 "금융 기관"을 검색했을 때, "bank"라는 단어가 포함되어 있더라도 낚시터(강둑)에 대한 결과는 제외할 수 있게 됩니다.

요약

특징 키워드 검색 시맨틱 검색 (벡터)
매칭 방법 정확한 글자 겹침 (Exact character overlap). 공간상의 수학적 근접성 (Proximity).
"Notebook" vs "Laptop" 매칭 실패 (글자가 다름). 매칭 성공 (벡터가 가까움).
"Bank"(돈) vs "Bank"(강) 혼동함 (다의성 문제). 문맥(Context)을 통해 구별함.
비유 문서에서 "Ctrl+F" 사용하기. 개념을 이해하는 사서에게 물어보기.

references